from typing import List


class Solution:
    def find1Bits(self, num: int) -> tuple(int, int):
        '''
        找到num中1的个数
        '''
        count = 0
        n = num
        while n:
            count += n & 1
            n >>= 1
        return count, num

    def sortByBits(self, arr: List[int]) -> List[int]:
        '''
        根据数字二进制下 1 的数目排序
        '''
        return sorted(arr, key=self.find1Bits)

    def sortByBits2(self, arr: List[int]) -> List[int]:
        '''
        一行代码
        '''
        return sorted(arr, key=lambda x: (bin(x).count('1'), x))